package com.ct.rabbitmqspringboot.listener;

import com.ct.rabbitmqspringboot.constant.Constants;
import com.rabbitmq.client.Channel;
import org.springframework.amqp.core.Message;
import org.springframework.amqp.rabbit.annotation.RabbitListener;
import org.springframework.stereotype.Component;

@Component
public class WorkListener {

    /**
     * @RabbitListener 是 Spring 框架中用于监听 RabbitMQ 队列的注解
     * 通过这个注解, 可以定义一个方法, 以便从 RabbitMQ 队列中接收消息
     * 该注解支持多种参数类型, 这些参数类型代表了从 RabbitMQ 接收到的消息和相关信息
     *
     * 常用的参数类型 :
     * 1. String : 返回消息的内容
     * 2. Message : SpringAMQP 的 Message 类, 返回原始的消息体以及消息的属性, 如果消息ID, 内容和队列信息等等
     * 3. Channel : RabbitMQ 的通道对,可以用于进行更高级的操作, 如手动确认消息
     */
    @RabbitListener(queues = Constants.WORK_QUEUE)
    public void queueListener1(Message message, Channel channel){
        System.out.println("listener 1 ["+Constants.WORK_QUEUE+"] 接收到消息 : " +message + ",channel:" + channel);
    }

    @RabbitListener(queues = Constants.WORK_QUEUE)
    public void queueListener2(String message){
        System.out.println("listener 2 ["+Constants.WORK_QUEUE+"] 接收到消息 : " + message);
    }
}
